package com.agileboot.attendance.domain.settlement.service;

import com.agileboot.attendance.domain.settlement.dto.SettlementApproveDTO;
import com.agileboot.attendance.domain.settlement.dto.SettlementBillDTO;
import com.agileboot.attendance.domain.settlement.dto.SettlementBillQuery;
import com.agileboot.attendance.domain.settlement.dto.SettlementBillRequest;
import com.agileboot.common.core.page.PageDTO;
import java.util.List;
import java.util.Map;

/**
 * 结算单服务接口
 */
public interface SettlementService {

    /**
     * 获取结算单列表
     * @param query 查询条件
     * @return 结算单列表
     */
    PageDTO<SettlementBillDTO> list(SettlementBillQuery query);

    /**
     * 获取结算单详情
     */
    SettlementBillDTO getInfo(Long id);

    /**
     * 新增结算单
     */
    Long add(SettlementBillRequest request);

    /**
     * 修改结算单
     */
    void update(SettlementBillRequest request);

    /**
     * 删除结算单
     */
    void delete(Long[] ids);

    /**
     * 提交审核
     */
    void submitReview(Long id);

    /**
     * 审核结算单
     */
    void approve(SettlementApproveDTO approveDTO);

    /**
     * 获取结算单号选项列表
     * @return 结算单号选项列表
     */
    List<Map<String, String>> getBillNoOptions();
} 